Micron Document
<!DOCTYPE html>
<html class="client-nojs vector-feature-language-in-header-enabled vector-feature-language-in-main-page-header-disabled vector-feature-page-tools-pinned-disabled vector-feature-toc-pinned-clientpref-0 vector-toc-not-available vector-feature-main-menu-pinned-disabled vector-feature-limited-width-clientpref-1 vector-feature-limited-width-content-enabled vector-feature-custom-font-size-clientpref-1 vector-feature-appearance-pinned-clientpref-0 skin-theme-clientpref-day vector-sticky-header-enabled" lang="de" dir="ltr"><head>
<meta charset="UTF-8">
<title>Secure Hash Algorithm</title>
<meta name="viewport" content="width=device-width, initial-scale=1.0">
<link rel="icon" type="image/png" href="./_res_/favicon.png">
<link rel="canonical" href="https://de.wikipedia.org/wiki/Secure_Hash_Algorithm"> <link href="./_mw_/ext.cite.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.math.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.wikimediamessages.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.icons.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.search.codex.styles.css" rel="stylesheet" type="text/css">
<link href="./_mw_/skins.vector.styles.css" rel="stylesheet" type="text/css">
<meta name="ResourceLoaderDynamicStyles" content="">
<link href="./_mw_/ext.gadget.citeRef.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.defaultPlainlinks.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonHide.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonLayout.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiCommonStyle.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiDarkmode.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.dewikiResponsive.css" rel="stylesheet" type="text/css">
<link href="./_mw_/ext.gadget.specialSearch.css" rel="stylesheet" type="text/css">
<link rel="stylesheet" type="text/css" href="./_mw_/site.styles.css">
<link rel="stylesheet" type="text/css" href="./_mw_/noscript.css">
<link rel="stylesheet" type="text/css" href="./_res_/footer.css">
<link rel="stylesheet" type="text/css" href="./_res_/vector-2022.css">
</head>
<body class="skin--responsive skin-vector skin-vector-search-vue mediawiki ltr sitedir-ltr mw-hide-empty-elt ns-0 ns-subject page-Secure_Hash_Algorithm rootpage-Secure_Hash_Algorithm skin-vector-2022 action-view">
<div class="mw-page-container">
<div class="mw-page-container-inner">
<div class="mw-content-container">
<main id="content" class="mw-body">
<header class="mw-body-header vector-page-titlebar">
<h1 id="firstHeading" class="firstHeading mw-first-heading"><span class="mw-page-title-main">Secure Hash Algorithm</span></h1>
</header>
<a id="top"></a>
<div id="bodyContent" class="vector-body ve-init-mw-desktopArticleTarget-targetContainer" aria-labelledby="firstHeading" data-mw-ve-target-container="">
<div id="contentSub">
<div id="mw-content-subtitle"></div>
</div>
<div id="mw-content-text" class="mw-body-content mw-content-ltr" lang="de" dir="ltr"><div class="mw-content-ltr mw-parser-output" lang="de" dir="ltr"><p>Der Begriff <b>Secure Hash Algorithm</b> (kurz <b>SHA</b>, <a href="Englische_Sprache" title="Englische Sprache">englisch</a> für <i>sicherer Hash-Algorithmus</i>) bezeichnet eine Gruppe standardisierter <a href="Kryptographische_Hashfunktion" title="Kryptographische Hashfunktion">kryptologischer Hashfunktionen</a>. Diese dienen zur Berechnung eines <a href="Pr%C3%BCfsumme" title="Prüfsumme">Prüfwerts</a> für beliebige digitale Daten (Nachrichten) und sind unter anderem die Grundlage zur Erstellung einer <a href="Digitale_Signatur" title="Digitale Signatur">digitalen Signatur</a>.
</p><p>Der Prüfwert wird verwendet, um die <a href="Integrit%C3%A4t_(Informationssicherheit)" title="Integrität (Informationssicherheit)">Integrität</a> einer Nachricht zu sichern. Wenn zwei Nachrichten den gleichen Prüfwert ergeben, soll die Gleichheit der Nachrichten, nach normalem Ermessen, garantiert sein. Darum fordert man von einer kryptologischen Hashfunktion die Eigenschaft der <a href="Kollisionsresistenz" title="Kollisionsresistenz">Kollisionssicherheit</a>: es soll praktisch unmöglich sein, zwei verschiedene Nachrichten mit dem gleichen Prüfwert zu erzeugen.
</p>

<div class="mw-heading mw-heading2"><h2 id="Geschichte_–_SHA/SHA-0"><span id="Geschichte_.E2.80.93_SHA.2FSHA-0"></span>Geschichte – SHA/SHA-0</h2></div>
<p>Das <a href="National_Institute_of_Standards_and_Technology" title="National Institute of Standards and Technology">National Institute of Standards and Technology</a> (NIST) entwickelte zusammen mit der <a href="National_Security_Agency" title="National Security Agency">National Security Agency</a> (NSA) eine Hash-Funktion als Bestandteil des <a href="Digital_Signature_Algorithm" title="Digital Signature Algorithm">Digital Signature Algorithms</a> (DSA) für den Digital Signature Standard (DSS). Die Funktion wurde 1993 veröffentlicht. Diese als Secure Hash Standard (SHS) bezeichnete Norm spezifiziert den sicheren Hash-Algorithmus (SHA) mit einem Hash-Wert von 160&nbsp;<a href="Bit" title="Bit">Bit</a> Länge für beliebige digitale Daten von maximal 2<sup>64</sup>&nbsp;−&nbsp;1&nbsp;Bit (≈ 2&nbsp;<a href="Byte#Binärpräfixe" title="Byte">Exbibyte</a>) Länge.
</p><p>SHA ist wie die von <a href="Ronald_L._Rivest" title="Ronald L. Rivest">Ronald L. Rivest</a> entwickelten <a href="Message-Digest_Algorithm_4" title="Message-Digest Algorithm 4">MD4</a> und <a href="Message-Digest_Algorithm_5" title="Message-Digest Algorithm 5">MD5</a> eine <a href="Merkle-Damg%C3%A5rd-Konstruktion" title="Merkle-Damgård-Konstruktion">Merkle-Damgård-Konstruktion</a> mit Davies-Meyer-Kompressionsfunktion, und die Kompressionsfunktion ist auch ähnlich wie bei diesen konstruiert. Mit seinem längeren Hash-Wert von 160&nbsp;Bit gegenüber 128&nbsp;Bit bei MD4 und MD5 ist SHA aber widerstandsfähiger gegen <a href="Brute-Force-Methode" title="Brute-Force-Methode">Brute-Force-Angriffe</a> zum Auffinden von Kollisionen.
</p><p>Die Nachricht wird mit einem Endstück <a href="Padding_(Informatik)" title="Padding (Informatik)">erweitert</a>, das die Länge der ursprünglichen Nachricht codiert. Dann wird sie in 512&nbsp;Bit lange Blöcke geteilt, welche nacheinander verarbeitet werden. Dazu wird ein interner Datenblock von 160&nbsp;Bit mittels einer <a href="Blockverschl%C3%BCsselung" title="Blockverschlüsselung">Blockverschlüsselung</a> verschlüsselt, mit dem Nachrichtenblock als Schlüssel. Zum Schlüsseltext wird dann der Klartext wortweise <a href="Division_mit_Rest#Modulo" title="Division mit Rest">modulo</a> <span class="mwe-math-element mwe-math-element-inline"><span class="mwe-math-mathml-inline mwe-math-mathml-a11y" style="display: none;"><math xmlns="http://www.w3.org/1998/Math/MathML" alttext="{\displaystyle 2^{32}}">
<semantics>
<mrow class="MJX-TeXAtom-ORD">
<mstyle displaystyle="true" scriptlevel="0">
<msup>
<mn>2</mn>
<mrow class="MJX-TeXAtom-ORD">
<mn>32</mn>
</mrow>
</msup>
</mstyle>
</mrow>
<annotation encoding="application/x-tex">{\displaystyle 2^{32}}</annotation>
</semantics>
</math></span><img src="./_assets_/eb734a37dd21ce173a46342d1cc64c92/a8c222ea8e5f187a2bb499395b6f4a6f38b43633.svg" class="mwe-math-fallback-image-inline mw-invert skin-invert" aria-hidden="true" style="vertical-align: -0.338ex; width:3.039ex; height:2.676ex;" alt="{\displaystyle 2^{32}}" loading="lazy"></span> addiert. Der so berechnete Datenblock wird nun mit dem nächsten Nachrichtenblock verschlüsselt oder nach dem Einarbeiten des letzten Nachrichtenblocks als Hashwert ausgegeben.
</p>
<div class="mw-heading mw-heading2"><h2 id="SHA-1">SHA-1</h2></div>

<p>Der ursprüngliche SHA wurde wegen eines „Konstruktionsfehlers“ schon 1995 korrigiert und spielte deswegen in der Praxis kaum eine Rolle. Er ist heute als <b>SHA-0</b> bekannt, die korrigierte Variante als <b>SHA-1</b>.
</p><p>Die Korrektur besteht nur in einem kleinen Detail (<a href="Schieberegister" title="Schieberegister">Rotation</a> eines Datenwortes in der Schlüsseleinteilung), nicht jedoch in der Anzahl der durchlaufenen Runden oder sonstiger Maßnahmen, die unmittelbar eine wesentlich höhere Sicherheit erwarten lassen. Die <a href="Kryptoanalyse" title="Kryptoanalyse">Kryptoanalyse</a> bestätigt jedoch, dass die Rotation die Berechnung von Kollisionen erheblich erschwert.
</p>
<div class="mw-heading mw-heading3"><h3 id="Schwächen"><span id="Schw.C3.A4chen"></span>Schwächen</h3></div>
<p>Am 15. Februar 2005 meldete der <a href="Kryptographie" title="Kryptographie">Kryptographieexperte</a> <a href="Bruce_Schneier" title="Bruce Schneier">Bruce Schneier</a> in seinem <a href="Blog" title="Blog">Blog</a><sup id="cite_ref-1" class="reference"><a href="#cite_note-1"><span class="cite-bracket">[</span>1<span class="cite-bracket">]</span></a></sup>, dass die Wissenschaftler Xiaoyun Wang, Yiqun Lisa Yin und Hongbo Yu von <a href="Shandong-Universit%C3%A4t" title="Shandong-Universität">Shandong University</a> in China erfolgreich SHA-1 gebrochen hätten. Ihnen war es gelungen, den Aufwand zur <a href="Kollisionsangriff" title="Kollisionsangriff">Kollisionsberechnung</a> von 2<sup>80</sup> auf 2<sup>69</sup> zu verringern.<sup id="cite_ref-2" class="reference"><a href="#cite_note-2"><span class="cite-bracket">[</span>2<span class="cite-bracket">]</span></a></sup> 2<sup>69</sup> Berechnungen könnten eventuell mit Hochleistungsrechnern durchgeführt werden.
</p><p>Kurze Zeit später, am 17. August 2005, wurde von Xiaoyun Wang, <a href="Andrew_Yao" title="Andrew Yao">Andrew Yao</a> und Frances Yao auf der Konferenz CRYPTO 2005 ein weiterer, effizienterer Kollisionsangriff auf SHA-1 vorgestellt, welcher den Berechnungsaufwand auf 2<sup>63</sup> reduziert.
</p><p>Im August 2006 wurde auf der CRYPTO 2006 ein weit schwerwiegenderer Angriff gegen SHA-1 präsentiert. Dabei sind bis zu 25&nbsp;% der gefälschten Nachricht frei wählbar. Bei bisherigen <a href="Kollisionsangriff" title="Kollisionsangriff">Kollisionsangriffen</a> wurden die so genannten Hash-Zwillinge nur mit sinnlosen Buchstabenkombinationen des Klartextes gebildet. Diese waren leicht erkennbar.
</p><p>Ein kritisches Angriffsszenario erfordert, dass Angreifer eine zweite, in Teilen sinnvolle Variante eines Dokuments erzeugen, die den gleichen SHA-1-Wert und damit die gleiche Signatur ergibt. Die beim Angriff verbleibenden 75&nbsp;% sinnloser Zeichen (also Datenmüll) können vor ungeschulten Betrachtern ggf. technisch verborgen werden. Der Angreifer kann behaupten, die gefälschte Variante sei anstatt der originalen Variante signiert worden.
</p><p>Im Oktober 2015 veröffentlichten Marc Stevens, Pierre Karpman und Thomas Peyrin eine Freestart-Kollision für die Kompressionsfunktion von SHA-1. Damit waren bis dahin geltende Abschätzungen, wann es zu welchen Kosten möglich ist, für SHA-1 aufgrund steigender Rechenleistung Chosen-Prefix-Kollisionen zur Fälschung von TLS-Zertifikaten zu finden, hinfällig.<sup id="cite_ref-3" class="reference"><a href="#cite_note-3"><span class="cite-bracket">[</span>3<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-Schneier-SHA1_4-0" class="reference"><a href="#cite_note-Schneier-SHA1-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup> Sie empfahlen, von SHA-1 baldmöglichst zu SHA-2 oder SHA-3 überzugehen.
</p><p>Im Februar 2017 veröffentlichten Google-Mitarbeiter eine erste Kollision von SHA-1. Sie erzeugten zwei verschiedene funktionierende <a href="Portable_Document_Format" title="Portable Document Format">PDF-Dateien</a> mit gleichem SHA-1-Prüfwert unter enormem Aufwand. Eine einzelne CPU hätte etwa 6500 Jahre dafür benötigt.<sup id="cite_ref-5" class="reference"><a href="#cite_note-5"><span class="cite-bracket">[</span>5<span class="cite-bracket">]</span></a></sup><br>Im Jahre 2019 benötigten öffentlich bekannte Chosen-Prefix-Angriffe 2<sup>66,9</sup> bis 2<sup>69,4</sup> SHA-1-Berechnungen, um Kollisionen zu finden. Das entsprach im Jahre 2017 100 GPU-Jahren Rechenkapazität.<sup id="cite_ref-6" class="reference"><a href="#cite_note-6"><span class="cite-bracket">[</span>6<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Empfehlungen">Empfehlungen</h3></div>
<p>Als Reaktion auf die bekanntgewordenen Angriffe gegen SHA-1 hielt das <a href="National_Institute_of_Standards_and_Technology" title="National Institute of Standards and Technology">National Institute of Standards and Technology</a> (NIST) im Oktober 2005 einen Workshop ab, in dem der aktuelle Stand kryptologischer Hashfunktionen diskutiert wurde. NIST empfiehlt, SHA-1 nicht mehr für <a href="Digitale_Signatur" title="Digitale Signatur">digitale Signaturen</a> zu verwenden, lässt die Nutzung für Anwendungszwecke, die keine Kollisionsresistenz benötigen, aber noch bis 2030 zu.<sup id="cite_ref-7" class="reference"><a href="#cite_note-7"><span class="cite-bracket">[</span>7<span class="cite-bracket">]</span></a></sup><sup id="cite_ref-8" class="reference"><a href="#cite_note-8"><span class="cite-bracket">[</span>8<span class="cite-bracket">]</span></a></sup> Das BSI empfiehlt die Verwendung von SHA-2 oder <a href="SHA-3" title="SHA-3">SHA-3</a> anstelle von SHA-1.<sup id="cite_ref-9" class="reference"><a href="#cite_note-9"><span class="cite-bracket">[</span>9<span class="cite-bracket">]</span></a></sup> Im Oktober 2015 empfahl Bruce Schneier, SHA-1 nicht mehr zu verwenden.<sup id="cite_ref-Schneier-SHA1_4-1" class="reference"><a href="#cite_note-Schneier-SHA1-4"><span class="cite-bracket">[</span>4<span class="cite-bracket">]</span></a></sup>
</p>
<div class="mw-heading mw-heading3"><h3 id="Beispiel-Hashes">Beispiel-Hashes</h3></div>
<pre>SHA1("<b>F</b>ranz jagt im komplett verwahrlosten Taxi quer durch Bayern")
= 68ac906495480a3404beee4874ed853a037a7a8f
</pre>
<p>Ein Tippfehler (G statt F) ändert den Text um nur ein Bit (ASCII-Code 0x47 statt 0x46):
</p>
<pre>SHA1("<b>G</b>ranz jagt im komplett verwahrlosten Taxi quer durch Bayern")
= 89fdde0b28373dc4f361cfb810b35342cc2c3232
</pre>
<p>Eine kleine Änderung der Nachricht erzeugt also einen komplett anderen Hash. Diese Eigenschaft wird in der <a href="Kryptographie" title="Kryptographie">Kryptographie</a> auch als <a href="Lawineneffekt_(Kryptographie)" title="Lawineneffekt (Kryptographie)">Lawineneffekt</a> bezeichnet.
</p><p>Der Hash eines Strings der Länge null ist:
</p>
<pre>SHA1("")
= da39a3ee5e6b4b0d3255bfef95601890afd80709
</pre>
<div class="mw-heading mw-heading3"><h3 id="Pseudocode">Pseudocode</h3></div>
<p>Es folgt der <a href="Pseudocode" title="Pseudocode">Pseudocode</a> für den SHA-1.
</p>
<pre><span style="color:green;">// <i>Beachte: Alle Variablen sind vorzeichenlose 32-Bit-Werte und</i>
// <i>verhalten sich bei Berechnungen <a href="Kongruenz_(Zahlentheorie)" title="Kongruenz (Zahlentheorie)">kongruent (≡)</a> modulo 2^32</i></span>
</pre>
<pre><span style="color:green;">// <i>Initialisiere die Variablen:</i></span>
<b>var</b> <i>int</i> h0&nbsp;:= 0x67452301
<b>var</b> <i>int</i> h1&nbsp;:= 0xEFCDAB89
<b>var</b> <i>int</i> h2&nbsp;:= 0x98BADCFE
<b>var</b> <i>int</i> h3&nbsp;:= 0x10325476
<b>var</b> <i>int</i> h4&nbsp;:= 0xC3D2E1F0
</pre>
<pre><span style="color:green;">// <i>Vorbereitung der Nachricht 'message':</i></span>
<b>var</b> <i>int</i> message_laenge&nbsp;:= bit_length(message)
<b>erweitere</b> message <b>um</b> bit "1"
<b>erweitere</b> message <b>um</b> bits "0" <b>bis</b> Länge von message in bits <a href="Kongruenz_(Zahlentheorie)" title="Kongruenz (Zahlentheorie)">≡</a> 448 (mod 512)
<b>erweitere</b> message <b>um</b> message_laenge als <i>64-Bit <a href="Byte-Reihenfolge#Big-endian" title="Byte-Reihenfolge">big-endian</a> Integer</i>
</pre>
<pre><span style="color:green;">// <i>Verarbeite die Nachricht in aufeinander folgenden 512-Bit-Blöcken:</i></span>
<b>für alle</b> <i>512-Bit</i> Block <b>von</b> message
unterteile Block in 16 32-bit <a href="Byte-Reihenfolge#Big-endian" title="Byte-Reihenfolge">big-endian</a> Worte w(i), 0 ≤ i ≤ 15
</pre>
<pre> <span style="color:green;">// <i>Erweitere die 16 32-Bit-Worte auf 80 32-Bit-Worte:</i></span>
<b>für alle</b> i <b>von</b> 16 <b>bis</b> 79
w(i)&nbsp;:= (w(i-3) <b>xor</b> w(i-8) <b>xor</b> w(i-14) <b>xor</b> w(i-16)) <b>leftrotate</b> 1
</pre>
<pre> <span style="color:green;">// <i>Initialisiere den Hash-Wert für diesen Block:</i></span>
<b>var</b> <i>int</i> a&nbsp;:= h0
<b>var</b> <i>int</i> b&nbsp;:= h1
<b>var</b> <i>int</i> c&nbsp;:= h2
<b>var</b> <i>int</i> d&nbsp;:= h3
<b>var</b> <i>int</i> e&nbsp;:= h4
</pre>
<pre> <span style="color:green;">// <i>Hauptschleife:</i></span>
<b>für alle</b> i <b>von</b> 0 <b>bis</b> 79
<b>wenn</b> 0 ≤ i ≤ 19 <b>dann</b>
f&nbsp;:= (b <b>and</b> c) <b>or</b> ((<b>not</b> b) <b>and</b> d)
k&nbsp;:= 0x5A827999
<b>sonst wenn</b> 20 ≤ i ≤ 39 <b>dann</b>
f&nbsp;:= b <b>xor</b> c <b>xor</b> d
k&nbsp;:= 0x6ED9EBA1
<b>sonst wenn</b> 40 ≤ i ≤ 59 <b>dann</b>
f&nbsp;:= (b <b>and</b> c) <b>or</b> (b <b>and</b> d) <b>or</b> (c <b>and</b> d)
k&nbsp;:= 0x8F1BBCDC
<b>sonst wenn</b> 60 ≤ i ≤ 79 <b>dann</b>
f&nbsp;:= b <b>xor</b> c <b>xor</b> d
k&nbsp;:= 0xCA62C1D6
<b>wenn_ende</b>
</pre>
<pre> temp&nbsp;:= (a <b>leftrotate</b> 5) + f + e + k + w(i)
e&nbsp;:= d
d&nbsp;:= c
c&nbsp;:= b <b>leftrotate</b> 30
b&nbsp;:= a
a&nbsp;:= temp
</pre>
<pre> <span style="color:green;">// <i>Addiere den Hash-Wert des Blocks zur Summe der vorherigen Hashes:</i></span>
h0&nbsp;:= h0 + a
h1&nbsp;:= h1 + b
h2&nbsp;:= h2 + c
h3&nbsp;:= h3 + d
h4&nbsp;:= h4 + e
</pre>
<pre>digest = hash = h0 <b>append</b> h1 <b>append</b> h2 <b>append</b> h3 <b>append</b> h4 <span style="color:green;">//<i>(Darstellung als <a href="Byte-Reihenfolge#Big-endian" title="Byte-Reihenfolge">big-endian</a>)</i></span>
</pre>
<p><i>Beachte: Anstatt der Original-Formulierung aus dem FIPS PUB 180-1 können alternativ auch folgende Formulierungen verwendet werden:</i>
</p>
<pre>(0 ≤ i ≤ 19): f&nbsp;:= d <b>xor</b> (b <b>and</b> (c <b>xor</b> d)) <span style="color:green;"><i>(Alternative)</i></span>
</pre>
<pre>(40 ≤ i ≤ 59): f&nbsp;:= (b <b>and</b> c) <b>or</b> (d <b>and</b> (b <b>or</b> c)) <span style="color:green;"><i>(Alternative 1)</i></span>
(40 ≤ i ≤ 59): f&nbsp;:= (b <b>and</b> c) <b>or</b> (d <b>and</b> (b <b>xor</b> c)) <span style="color:green;"><i>(Alternative 2)</i></span>
(40 ≤ i ≤ 59): f&nbsp;:= (b <b>and</b> c) + (d <b>and</b> (b <b>xor</b> c)) <span style="color:green;"><i>(Alternative 3)</i></span>
(40 ≤ i ≤ 59): f&nbsp;:= (b <b>and</b> c) <b>xor</b> (d <b>and</b> (b <b>xor</b> c)) <span style="color:green;"><i>(Alternative 4)</i></span>
</pre>
<div class="mw-heading mw-heading2"><h2 id="SHA-2">SHA-2</h2></div>
<div class="hauptartikel" role="navigation"><span class="hauptartikel-pfeil" title="siehe" aria-hidden="true" role="presentation">→&nbsp;</span><i><span class="hauptartikel-text">Hauptartikel</span>: <a href="SHA-2" title="SHA-2">SHA-2</a></i></div>
<p>Das <a href="National_Institute_of_Standards_and_Technology" title="National Institute of Standards and Technology">NIST</a> hat vier weitere Algorithmen veröffentlicht, die größere Hash-Werte erzeugen. Es handelt sich dabei um den SHA-224, SHA-256, SHA-384 und SHA-512, wobei die angefügte Zahl jeweils die Länge des Hash-Werts (in Bit) angibt. Später kamen noch die Versionen SHA-512/256 und SHA-512/224 hinzu. Diese Weiterentwicklungen werden häufig unter der Bezeichnung SHA-2 zusammengefasst. Sie sind nach dem gleichen Konstruktionsprinzip aufgebaut wie SHA-1, man hat nur den internen Datenblock auf 256 bzw. 512&nbsp;Bit vergrößert und die <a href="Blockverschl%C3%BCsselung" title="Blockverschlüsselung">Blockverschlüsselung</a> modifiziert, auf der die Kompressionsfunktion basiert.
</p><p>Von den Algorithmen SHA-1 und SHA-256 hat man die Blockverschlüsselung <a href="SHACAL" title="SHACAL">SHACAL</a> abgeleitet. Diese besteht im Wesentlichen in der internen Blockverschlüsselung von SHA-1 bzw. SHA-256, die hier für sich allein genutzt wird.
</p>
<div class="mw-heading mw-heading2"><h2 id="SHA-3">SHA-3</h2></div>
<div class="hauptartikel" role="navigation"><span class="hauptartikel-pfeil" title="siehe" aria-hidden="true" role="presentation">→&nbsp;</span><i><span class="hauptartikel-text">Hauptartikel</span>: <a href="SHA-3" title="SHA-3">SHA-3</a></i></div>
<p>Weil man im Jahr 2004 grundlegende Schwächen der Merkle-Damgård-Konstruktion entdeckte, suchte das NIST nach einer neuen Hashfunktion, die wesentlich zukunftssicherer als SHA-2 sein sollte. Es rief dazu zu einem Wettbewerb auf, wie zuvor bereits für den <a href="Advanced_Encryption_Standard" title="Advanced Encryption Standard">Advanced Encryption Standard</a> (AES). Die Wahl fiel im Oktober 2012 auf <a href="SHA-3" title="SHA-3">Keccak</a>, die dann im August 2015 unter der Bezeichnung SHA-3 in verschiedenen Varianten standardisiert wurde. SHA-3 ist grundlegend anders als SHA-2 aufgebaut, nämlich als sogenannte <i>Sponge-Konstruktion</i>.
</p>
<div class="mw-heading mw-heading2"><h2 id="Spezifikationen">Spezifikationen</h2></div>
<ul><li>D. Eastlake, P. Jones: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <style data-mw-deduplicate="TemplateStyles:r250917974">
/* start https://de.wikipedia.org/ */


.mw-parser-output .dewiki-iconexternal>a{background-position:center right!important;background-repeat:no-repeat!important}body.skin-minerva .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/OOjs_UI_icon_external-link-ltr-progressive.svg")!important;background-size:10px!important;padding-right:13px!important}body.skin-timeless .mw-parser-output .dewiki-iconexternal>a,body.skin-monobook .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/MediaWiki_external_link_icon.svg")!important;padding-right:13px!important}body.skin-vector .mw-parser-output .dewiki-iconexternal>a{background-image:url("./_mw_/Link.ernal-small-ltr-progressive.svg")!important;background-size:0.857em!important;padding-right:1em!important}


/* end https://de.wikipedia.org/ */
</style><span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc3174" class="extiw external" title="rfc:3174">3174</a></span></i>&nbsp;– <i><span lang="en">US Secure Hash Algorithm 1 (SHA1)</span></i>. September 2001 (englisch).</li>
<li>D. Eastlake, T. Hansen: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc4634" class="extiw external" title="rfc:4634">4634</a></span></i>&nbsp;– <i><span lang="en">US Secure Hash Algorithms (SHA and HMAC-SHA)</span></i>. Juli 2006 (englisch).</li>
<li>D. Eastlake, T. Hansen: <i><a href="Request_for_Comments" title="Request for Comments">RFC</a>: <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc6234" class="extiw external" title="rfc:6234">6234</a></span></i>&nbsp;– <i><span lang="en">US Secure Hash Algorithms (SHA and SHA-based HMAC and HKDF)</span></i>. Mai 2011 (löst <span class="dewiki-iconexternal"><a href="https://datatracker.ietf.org/doc/html/rfc4634" class="extiw external" title="rfc:4634"><i>RFC&nbsp;4634</i></a></span> ab, englisch).</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Siehe_auch">Siehe auch</h2></div>
<ul><li><a href="Zyklische_Redundanzpr%C3%BCfung" title="Zyklische Redundanzprüfung">Zyklische Redundanzprüfung</a> (ZRP, engl. CRC)</li>
<li><a href="Pr%C3%BCfsumme" title="Prüfsumme">Prüfsumme</a></li>
<li><a href="Hamming-Code" title="Hamming-Code">Hamming-Code</a></li>
<li><a href="Elliptic_Curve_Cryptography" title="Elliptic Curve Cryptography">Elliptic Curve Cryptography</a></li>
<li><a href="Parit%C3%A4tsbit" title="Paritätsbit">Paritätsbit</a></li>
<li><a href="Message-Digest_Algorithm_5" title="Message-Digest Algorithm 5">MD5</a></li></ul>
<div class="mw-heading mw-heading2"><h2 id="Weblinks">Weblinks</h2></div>
<ul><li><a rel="nofollow" class="external text" href="http://csrc.nist.gov/publications/fips/fips180-4/fips-180-4.pdf">FIPS PUB 180-4</a> Secure Hash Standard (PDF; 369&nbsp;kB)</li>
<li><a rel="nofollow" class="external text" href="http://www.z1-web.de/Webmaster-Tools_SHA1-Passwort-Generator">SHA1-Passwort-Generator</a> Online-Konverter zur Generierung von SHA1-Hashwerten aus normalem Text</li>
<li><a rel="nofollow" class="external text" href="https://www.psw-group.de/blog/sha-1-wird-verabschiedet-sha-2-startet-das-muessen-sie-wissen/1665">SHA-1 wird verabschiedet, SHA-2 startet (Update: SHA-3 wird Standard)</a> IT-Security, von Christian Heutger, 6. August 2015.</li></ul>
<p><b>Zu den Schwächen von SHA</b>
</p>
<ul><li><a href="Arjen_Lenstra" title="Arjen Lenstra">Arjen Lenstra</a>: <a rel="nofollow" class="external text" href="http://infoscience.epfl.ch/record/164540/files/NPDF-33.pdf"><i>Further progress in hashing cryptanalysis</i></a>, 26. Februar 2005 (englisch, PDF; 89&nbsp;kB)</li>
<li>Xiaoyun Wang, Yiqun Lisa Yin, Hongbo Yu: <a rel="nofollow" class="external text" href="http://cryptome.org/wang_sha1_v2.zip"><i>Finding Collisions in the Full SHA-1</i></a> (englisch, PDF; <a href="ZIP-Dateiformat" title="ZIP-Dateiformat">ZIP</a>; 190&nbsp;kB)</li>
<li><a rel="nofollow" class="external text" href="https://www.heise.de/security/meldung/Zweifel-an-der-Notwendigkeit-des-Kryptostandards-SHA3-1497267.html">Zweifel an der Notwendigkeit des Kryptostandards SHA3</a> heise online 30. März 2012</li></ul>
<div class="mw-heading mw-heading2"><h2 id="Einzelnachweise">Einzelnachweise</h2></div>
<ol class="references">
<li id="cite_note-1"><span class="mw-cite-backlink"><a href="#cite_ref-1">↑</a></span> <span class="reference-text"><span class="cite"><a href="Bruce_Schneier" title="Bruce Schneier">Bruce Schneier</a>: <a rel="nofollow" class="external text" href="http://www.schneier.com/blog/archives/2005/02/sha1_broken.html"><i>SHA-1 Broken.</i></a> 15.&nbsp;Februar 2005,<span class="Abrufdatum"> abgerufen am 10.&nbsp;Dezember 2011</span> (englisch).</span><span style="display: none;" class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Adc&amp;rfr_id=info%3Asid%2Fde.wikipedia.org%3ASecure+Hash+Algorithm&amp;rft.title=SHA-1+Broken&amp;rft.description=SHA-1+Broken&amp;rft.identifier=http%3A%2F%2Fwww.schneier.com%2Fblog%2Farchives%2F2005%2F02%2Fsha1_broken.html&amp;rft.creator=%5B%5BBruce+Schneier%5D%5D&amp;rft.date=2005-02-15&amp;rft.language=en">&nbsp;</span></span>
</li>
<li id="cite_note-2"><span class="mw-cite-backlink"><a href="#cite_ref-2">↑</a></span> <span class="reference-text">Xiaoyun Wang, Yiqun Lisa Yin und Hongbo Yu: <cite style="font-style:italic">Finding Collisions in the Full SHA-1</cite>. In: <cite style="font-style:italic">CRYPTO</cite>. 2005, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em">&nbsp;</span>17–36</span> (<a rel="nofollow" class="external text" href="http://people.csail.mit.edu/yiqun/SHA1AttackProceedingVersion.pdf">PDF</a>).<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abook&amp;rfr_id=info:sid/de.wikipedia.org:Secure+Hash+Algorithm&amp;rft.atitle=Finding+Collisions+in+the+Full+SHA-1&amp;rft.au=Xiaoyun+Wang%2C+Yiqun+Lisa+Yin+und+Hongbo+Yu&amp;rft.btitle=CRYPTO&amp;rft.date=2005&amp;rft.genre=book&amp;rft.pages=17-36" style="display:none">&nbsp;</span></span>
</li>
<li id="cite_note-3"><span class="mw-cite-backlink"><a href="#cite_ref-3">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://sites.google.com/site/itstheshappening/">https://sites.google.com/site/itstheshappening/</a></span>
</li>
<li id="cite_note-Schneier-SHA1-4"><span class="mw-cite-backlink">↑ <sup><a href="#cite_ref-Schneier-SHA1_4-0">a</a></sup> <sup><a href="#cite_ref-Schneier-SHA1_4-1">b</a></sup></span> <span class="reference-text"><a rel="nofollow" class="external free" href="https://www.schneier.com/blog/archives/2015/10/sha-1_freestart.html">https://www.schneier.com/blog/archives/2015/10/sha-1_freestart.html</a></span>
</li>
<li id="cite_note-5"><span class="mw-cite-backlink"><a href="#cite_ref-5">↑</a></span> <span class="reference-text">Marc Stevens, Elie Bursztein, Pierre Karpman, Ange Albertini, Yarik Markov: <a rel="nofollow" class="external text" href="https://shattered.io/static/shattered.pdf">The first collision for full SHA-1</a>, shattered.io</span>
</li>
<li id="cite_note-6"><span class="mw-cite-backlink"><a href="#cite_ref-6">↑</a></span> <span class="reference-text">G. Leurent, T. Peyrin: <a rel="nofollow" class="external text" href="https://eprint.iacr.org/2019/459.pdf">From Collisions to Chosen-Prefix Collisions. Application to Full SHA-1</a>, Inria</span>
</li>
<li id="cite_note-7"><span class="mw-cite-backlink"><a href="#cite_ref-7">↑</a></span> <span class="reference-text">NIST Special Publication 800-131A, Revision 2: <a rel="nofollow" class="external text" href="https://nvlpubs.nist.gov/nistpubs/SpecialPublications/NIST.SP.800-131Ar2.pdf">Transitioning the Use of Cryptographic Algorithms and Key Lengths</a>. März 2019. Seite 18f.</span>
</li>
<li id="cite_note-8"><span class="mw-cite-backlink"><a href="#cite_ref-8">↑</a></span> <span class="reference-text"><a rel="nofollow" class="external text" href="https://csrc.nist.gov/news/2022/nist-transitioning-away-from-sha-1-for-all-apps">NIST Transitioning Away from SHA-1 for All Applications</a>. 15. Dezember 2022.</span>
</li>
<li id="cite_note-9"><span class="mw-cite-backlink"><a href="#cite_ref-9">↑</a></span> <span class="reference-text"><a href="Bundesamt_f%C3%BCr_Sicherheit_in_der_Informationstechnik" title="Bundesamt für Sicherheit in der Informationstechnik">BSI</a> (Hrsg.): <cite style="font-style:italic">TR-02102-1 Kryptographische Verfahren: Empfehlungen und Schlüssellängen</cite>. 2024-01 Auflage. 2.&nbsp;Februar 2024, 1.5. Umgang mit Legacy-Algorithmen, <span style="white-space:nowrap">S.<span style="display:inline-block;width:.2em">&nbsp;</span>24</span> (<a rel="nofollow" class="external text" href="https://www.bsi.bund.de/DE/Themen/Unternehmen-und-Organisationen/Standards-und-Zertifizierung/Technische-Richtlinien/TR-nach-Thema-sortiert/tr02102/tr-02102.html?nn=433400">bund.de</a> [abgerufen am 6.&nbsp;September 2024]): „SHA1 ist keine kollisionsresistente Hashfunktion. [...] Als grundsätzliche Sicherungsmaßnahme wird empfohlen, auch in diesen Anwendungen eine Hashfunktion der SHA2- oder der SHA3-Familie einzusetzen.“<span class="Z3988" title="ctx_ver=Z39.88-2004&amp;rft_val_fmt=info%3Aofi%2Ffmt%3Akev%3Amtx%3Abookitem&amp;rfr_id=info:sid/de.wikipedia.org:Secure+Hash+Algorithm&amp;rft.atitle=1.5.+Umgang+mit+Legacy-Algorithmen&amp;rft.btitle=TR-02102-1+Kryptographische+Verfahren%3A+Empfehlungen+und+Schl%C3%BCssell%C3%A4ngen&amp;rft.date=2024-02-02&amp;rft.edition=2024-01&amp;rft.genre=bookitem&amp;rft.pages=24" style="display:none">&nbsp;</span></span>
</li>
</ol></div><!--htdig_noindex--><div><div class="zim-footer">
Dieser Artikel wurde von <a class="external text" title="Zuletzt bearbeitet am 2025-11-16" href="https://de.wikipedia.org/wiki/?title=Secure_Hash_Algorithm&amp;oldid=261612744">Wikipedia</a> herausgegeben. Der Text ist unter <a class="external text" href="https://creativecommons.org/licenses/by-sa/4.0/deed.de">Creative Commons Attribution-Share Alike 4.0</a> verfügbar, sofern nicht anders angegeben. Für die Mediendateien können zusätzliche Bedingungen gelten.
</div>
</div><!--/htdig_noindex--></div>
</div>
</main>
</div>
</div>
</div>
<script src="./_webp_/webpHandler.js"></script>

</body></html>